﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Biuro.Formy
{
    public delegate void TworzenieKlienta();
    public partial class SearchClientForm : Form
    {
        string _zapytanie = "SELECT id, imie, nazwisko, pesel FROM klient";

        public string Zapytanie
        {
            get { return _zapytanie; }
            set { _zapytanie = value; }
        }
        int _id;
        string _imie;
        string _nazwisko;
        public event TworzenieKlienta DodajKlienta;

        public delegate void WysylaczEventHandler(object sender, WysylaczZapytaniaEventArgs e);

        public event WysylaczEventHandler PobierzZapytanie;

        public delegate void WysylaczIdEventHandler(object sender, WysylaczIdEventArgs e);

        public event WysylaczIdEventHandler PobierzId;

        public int WybranyKlientId
        {
            get { return _id; }
        }
        public string WybranyKlientImie
        {
            get { return _imie; }
        }
        public string WybranyKlientNazwisko
        {
            get { return _nazwisko; }
        }
        public DataTable WynikWyszukiwania
        {
            set 
            {
                if (dtWynik.DataSource != null)
                {
                    dtWynik.Columns.Remove("x");
                    dtWynik.Columns.Remove("id");
                    dtWynik.Columns.Remove("imie");
                    dtWynik.Columns.Remove("nazwisko");
                    dtWynik.Columns.Remove("pesel");
                }
                dtWynik.DataSource = value;
                DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
                {
                    column.HeaderText = "x";
                    column.ReadOnly = false;
                    column.ValueType = typeof(bool);
                    column.TrueValue = true;
                    column.FalseValue = false;
                    column.Name = "x";
                    column.AutoSizeMode =
                        DataGridViewAutoSizeColumnMode.DisplayedCells;
                    column.FlatStyle = FlatStyle.Standard;
                    column.ThreeState = true;
                    column.DefaultCellStyle.NullValue = false;
                    column.CellTemplate = new DataGridViewCheckBoxCell();
                    column.CellTemplate.Style.BackColor = Color.Beige;
                }
                if (dtWynik.DataSource != null)
                {
                    dtWynik.Columns.Insert(0, column);
                    dtWynik.Columns["id"].Visible = false;
                    dtWynik.Columns["imie"].ReadOnly = true;
                    dtWynik.Columns["nazwisko"].ReadOnly = true;
                    dtWynik.Columns["pesel"].ReadOnly = true;
                }
            }
        }
        public SearchClientForm()
        {
            InitializeComponent();
        }

        private void btSzukaj_Click(object sender, EventArgs e)
        {
            bool czy_bylo = false;
            if (tbImie.TextLength > 0)
            {
                _zapytanie += " WHERE imie LIKE \'" + tbImie.Text + "%\'";
                czy_bylo = true;
            }
            if (tbNazwisko.TextLength > 0)
            {
                if (czy_bylo)
                    _zapytanie += " AND nazwisko LIKE \'" + tbNazwisko.Text + "%\'";
                else
                {
                    _zapytanie += " WHERE nazwisko LIKE \'" + tbNazwisko.Text + "%\'";
                    czy_bylo = true;
                }
            }
            if (tbPesel.TextLength > 0)
            {
                if (czy_bylo)
                    _zapytanie += " AND pesel = " + tbPesel.Text;
                else
                {
                    _zapytanie += " WHERE pesel = " + tbPesel.Text;
                    czy_bylo = true;
                }
            }
            if (PobierzZapytanie != null)
                PobierzZapytanie(this, new WysylaczZapytaniaEventArgs(_zapytanie));
        }

        public class WysylaczZapytaniaEventArgs : EventArgs
        {
            private string _zapytanie;
            public string Zapytanie
            {
                get { return _zapytanie; }
            }
            public WysylaczZapytaniaEventArgs(string zapytanie)
            {
                this._zapytanie = zapytanie;
            }
        }

        public class WysylaczIdEventArgs : EventArgs
        {
            private int _id;
            public int Id
            {
                get { return _id; }
            }
            public WysylaczIdEventArgs(int id)
            {
                this._id = id;
            }
        }

        private void btOk_Click(object sender, EventArgs e)
        {
            try
            {
                if (dtWynik.SelectedRows[0].Cells[0].Value.ToString() == "True")
                {
                    _id = (int)dtWynik.SelectedRows[0].Cells[1].Value;
                    _imie = dtWynik.SelectedRows[0].Cells[2].Value.ToString();
                    _nazwisko = dtWynik.SelectedRows[0].Cells[3].Value.ToString();
                }
            }
            catch (Exception exp)
            {
                _id = -1;
                _imie = "";
                _nazwisko = "";
            }
        }

        private void dtWynik_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
                for (int i = 0;i<dtWynik.Rows.Count;i++)
                    dtWynik.Rows[i].Cells[0].Value = false; 
                if (dtWynik.SelectedRows[0].Cells[0].Value.ToString() == "False")
                    dtWynik.SelectedRows[0].Cells[0].Value = true; 
                else
                    dtWynik.SelectedRows[0].Cells[0].Value = false; 

        }

        private void btDodaj_Click(object sender, EventArgs e)
        {
            if (DodajKlienta != null)
                DodajKlienta();
        }

        private void btEdit_Click(object sender, EventArgs e)
        {
            try
            {
                if (dtWynik.SelectedRows[0].Cells[0].Value.ToString() == "True")
                {
                    _id = (int)dtWynik.SelectedRows[0].Cells[1].Value;
                    _imie = dtWynik.SelectedRows[0].Cells[2].Value.ToString();
                    _nazwisko = dtWynik.SelectedRows[0].Cells[3].Value.ToString();
                    if (PobierzId != null)
                        PobierzId(this, new WysylaczIdEventArgs(_id));
                }
            }
            catch (Exception exp)
            {
                MessageBox.Show("Nie wybrałeś żadnego klienta");
            }
        }

        private void SearchClientForm_Load(object sender, EventArgs e)
        {
            tpPomoc.SetToolTip(btCancel, "Anuluj wybór");
            tpPomoc.SetToolTip(btSzukaj, "Szukaj klienta");
            tpPomoc.SetToolTip(btDodaj, "Dodaj nowego klienta");
            tpPomoc.SetToolTip(btEdit, "Edytuj wybranego klienta");
            tpPomoc.SetToolTip(btOk, "Zatwierdź wybranego klienta jako akywnego");
        }

    }
}
